package com.qingmeng.portal.service;

import com.qingmeng.model.Blog;
import com.qingmeng.portal.model.dto.BlogPublishParam;
import com.qingmeng.portal.model.vo.BlogContentVo;

import java.util.List;

public interface BlogService {
    /**
     * 发布博客
     * @param param 前端传过来的博客信息
     * @param publisherId 发布者id
     * @return 发布成功放回1 发布失败返回0
     */
    int publishBlog(BlogPublishParam param, Long publisherId);

    /**
     * 通过博客id查询博客内容
     * @param id 博客id
     * @return 博客内容
     */
    BlogContentVo getBlogById(Long id);

    /**
     * 根据博客标题获取博客内容
     * @param title 博客标题
     * @param pageNum 页码
     * @param pageSize 每页几条数据
     * @return 符合要去的博客
     */
    List<BlogContentVo> getBlogByTitle(String title, int pageNum, int pageSize);

    /**
     * 获取所有博客
     * @param pageNum 页码
     * @param pageSize 每页几条数据
     * @return 所有博客
     */
    List<BlogContentVo> getAllBlogs(int pageNum, int pageSize);

    /**
     * 根据博客id修改博客内容
     * @param id 博客id
     * @param param 需要修改的内容
     * @return 修改过后的内容
     */
    BlogPublishParam alterBlogById(Long id, BlogPublishParam param);

    /**
     * 根据博客id删除博客
     * @param id 博客id
     * @return 1为删除成功 0为删除失败
     */
    int deleteBlogById(Long id);

    /**
     * 评论博客
     * @param id 要评论的博客id
     * @param comment 评论内容
     * @param tag 是否点赞该博客 0 表示不点赞 1表示点赞
     * @param userId 评论者id
     * @return 1表示评论成功 0表示评论失败
     */
    int commentBlog(Long id, String comment,int tag, Long userId);
}
